/**************************************
 *数据结构-->顺序表的使用
 *时间：2024.12.3
 *作者：shane 
 **************************************/
#include <stdio.h>

#define MAXLEN	100
#define OK	1
#define ERR 0

typedef int 	status;
typedef char	dataType; 

typedef struct 
{
	char data[MAXLEN];
	int Lenth;
}list;

/*插入操作，在指定位置插入数据*/
status insertxxx(list *l, int index, dataType d)
{
	if(l->Lenth == MAXLEN){
		
		return ERR;
	}
	if(l->Lenth < index || index < 1){
		
		return ERR;
	}
	for (int i = l->Lenth - 1; index - 1 <= i; i--)
	{
		/* code */
		l->data[i + 1] = l->data[i];
	}
	
	l->data[index - 1] = d;
	l->Lenth++;
	return OK;
}

/*删除操作，删除指定位置数据*/
status delxxx(list *l, int index)
{
	if(l->Lenth == 0){
		return ERR;
	}
	if(index > l->Lenth || index < 1){
		return ERR;
	}
	
	for (int i = index - 1; i < l->Lenth ; i++)
	{
		/* code */
		l->data[i] = l->data[i + 1];
	}
	l->Lenth--;
	return OK;
}

/*在末尾追加数据*/
status appendxxx(list *l, dataType d)
{
	if(l->Lenth == MAXLEN){
		return ERR;
	}

	l->data[l->Lenth] = d;
	l->Lenth++;
	return OK;
}

/*获取数据*/
status getxxx(list l, int index, dataType* d)
{
	if(l.Lenth == 0 || index < 1 || index > l.Lenth){
		//TODO
		return ERR;
	}
	*d = l.data[index - 1];
	return OK;
}

int main (void)
{
	list l = {
		.data = {0x31,0x32,0x33,0x34,0x35},
		.Lenth = 5
	};
	printf("原数据：%s 长度：%d\n",l.data,l.Lenth);
	
	if(appendxxx(&l,'6'))
		printf("追加后：%s   长度：%d\n",l.data,l.Lenth);
	if(insertxxx(&l,4,'A'))
		printf("插入后：%s   长度：%d\n",l.data,l.Lenth);
	if(delxxx(&l,1))
		printf("删除后：%s   长度：%d\n",l.data,l.Lenth);
	dataType val;
	if(getxxx(l, 2, &val))
		printf("获取到：%c\n",val);
	return 0;
}
